Application interface technologies may be used to provide interoperability between software applications, but can be complex. For example, Component Object Model (COM) is a well-established technology that enables disjoint pieces of software to interoperate. In COM, a developer writes components that can offer functionality to other software, by exposing method interfaces with a globally unique identifier (GUID) that is known to both parties, and that can consume functionality from other software, by querying for available implementations of method interfaces by their known GUIDs. Writing these COM components can be difficult especially for non-programmers.
Furthermore, application development environments are available for business users to create applications. For example, declarative application development environments provide an easy way to create declarative applications. Declarative application environments often employ graphical user interfaces that allow a user with minimal programming skills to create a declarative application through drag and drop operations or through other declarative programming operations. However, declarative applications have traditionally been very constrained in terms of allowing interoperability with other pieces of software on a user's computer, and programming COM components can be difficult especially for non-programmers.